package com.easysettle.model

import java.io.Serializable

/**
 * 商品数据模型类
 * 包含商品的基本信息
 */
class Product(
    // 商品ID，3位数字格式
    var id: String,
    // 商品名称
    var name: String,
    // 商品价格
    var price: Double,
    // 商品条形码
    var barcode: String = "",
    // 商品图片路径
    var imagePath: String? = null
) : Serializable {
    companion object {
        // 序列化版本ID
        private const val serialVersionUID: Long = 1L
    }

    /**
     * 获取格式化的商品ID（确保3位数字）
     */
    fun getFormattedId(): String {
        return String.format("%03d", id.toIntOrNull() ?: 0)
    }

    /**
     * 获取格式化的商品价格
     */
    fun getFormattedPrice(): String {
        return String.format("%.2f", price)
    }

    /**
     * 检查商品是否有图片
     */
    fun hasImage(): Boolean {
        return imagePath != null && imagePath!!.isNotEmpty()
    }

    override fun toString(): String {
        return "Product(id='$id', name='$name', price=$price, barcode='$barcode', imagePath=$imagePath)"
    }

    override fun equals(other: Any?): Boolean {
        if (this === other) return true
        if (javaClass != other?.javaClass) return false

        other as Product

        return id == other.id
    }

    override fun hashCode(): Int {
        return id.hashCode()
    }
}